<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <div name="ee"></div>
</body>
</html>
<script> 
  // 类的概念，（物以类聚人以群分），类，就是具有某些相同特征或者功能的集合。

  // 声明对象的几种方式。
  // 1.字面量声明
//   let obj = {
//     name: '张三'
//   }
// 2.工厂函数来创建一个对象
//   function create (val) {
//     return new Object({name:val});
//   }
//   let obj = create('张三');
//   console.log(obj);



// 构造函数，创建一个对象；(构造函数的特点：首字母习惯大写)
// function Create(val) { 
//    this.name = val;
// }

// let obj = new Create('王二小');
// console.log(obj);




// class 类 来创建一个对象；

// class Create { // 为了和构造函数，保持一致 class 的首字母我们通常也要大写
//   constructor(val,age){ // constructor 是class 里面的自调用函数，只要该类被 new 关键字实例化，该函数就会自动调用
//     // console.log(this);
//     this.name = val;
//     this.age = age;
//   }
// }
// 在 class 类里面 this 是指向 实例化出来的对象

// let obj = new Create('马六',18);
// let obj1 = new Create('七郎',28);
// console.log(obj);
// console.log(obj1);

class Father { // 
  constructor(money){
    this.money = money;
  }
  mine(){
    console.log('啥都没有，就是钱多');
  }
}

let ftobj = new Father('5个亿');
// console.log(ftobj);

// extends 用来 class 的继承
// class Son extends Father{} // 完全继承，没有自己的特点；


class Son extends Father { // this 不知道该指向谁 super 来实现，继承属性和方法
  constructor(money,name,age,thing){
    super(money); // 拷贝 父类所有的属性
    this.name = name;
    this.age = age;
    this.thing = thing;
  }
  done(){
    console.log(`我是${this.name},我今年${this.age}岁,我是王者峡谷的${this.thing}！`);
  }
};

let obj = new Son('5个亿','李杨',3,'菜鸟');
obj.mine();
obj.done();
console.log(obj);







// class Son { // 
//    constructor(name,age,thing){ // constructor 里面我们一般 声明属性，
//      this.name = name;
//      this.age = age;
//      this.thing = thing;
//    }
//    done(){// 要做的事情
//       console.log(`我是${this.name},我今年${this.age}岁,我是王者峡谷的${this.thing}！`);
//    }
// }
// 所有的 通过 Son 创建出来的对象，都有done 方法 以及name,age,thing 三个属性;
// let obj = new Son('李杨',3,'菜鸟');
// obj.done();
// let obj1 = new Son('梦泪',18,'yyds');
// console.log(obj1);
// obj1.done();
// console.log(obj);
</script>